/*
 * tegra_asoc_machine_virt_alt.h
 *
 * Copyright (c) 2017 NVIDIA CORPORATION.  All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms and conditions of the GNU General Public License,
 * version 2, as published by the Free Software Foundation.
 *
 * This program is distributed in the hope it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
 * more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

#ifndef __TEGRA_ASOC_MACHINE_VIRT_ALT_H__
#define __TEGRA_ASOC_MACHINE_VIRT_ALT_H__

#include "tegra210_virt_alt_admaif.h"

enum tegra210_xbar_dai_link {
	TEGRA210_DAI_LINK_ADMAIF1,
	TEGRA210_DAI_LINK_ADMAIF2,
	TEGRA210_DAI_LINK_ADMAIF3,
	TEGRA210_DAI_LINK_ADMAIF4,
	TEGRA210_DAI_LINK_ADMAIF5,
	TEGRA210_DAI_LINK_ADMAIF6,
	TEGRA210_DAI_LINK_ADMAIF7,
	TEGRA210_DAI_LINK_ADMAIF8,
	TEGRA210_DAI_LINK_ADMAIF9,
	TEGRA210_DAI_LINK_ADMAIF10,
	TEGRA210_XBAR_DAI_LINKS, /* Total number of xbar dai links */
};

enum tegra186_xbar_dai_link {
	TEGRA186_DAI_LINK_ADMAIF1,
	TEGRA186_DAI_LINK_ADMAIF2,
	TEGRA186_DAI_LINK_ADMAIF3,
	TEGRA186_DAI_LINK_ADMAIF4,
	TEGRA186_DAI_LINK_ADMAIF5,
	TEGRA186_DAI_LINK_ADMAIF6,
	TEGRA186_DAI_LINK_ADMAIF7,
	TEGRA186_DAI_LINK_ADMAIF8,
	TEGRA186_DAI_LINK_ADMAIF9,
	TEGRA186_DAI_LINK_ADMAIF10,
	TEGRA186_DAI_LINK_ADMAIF11,
	TEGRA186_DAI_LINK_ADMAIF12,
	TEGRA186_DAI_LINK_ADMAIF13,
	TEGRA186_DAI_LINK_ADMAIF14,
	TEGRA186_DAI_LINK_ADMAIF15,
	TEGRA186_DAI_LINK_ADMAIF16,
	TEGRA186_DAI_LINK_ADMAIF17,
	TEGRA186_DAI_LINK_ADMAIF18,
	TEGRA186_DAI_LINK_ADMAIF19,
	TEGRA186_DAI_LINK_ADMAIF20,
	TEGRA186_DAI_LINK_ADSP_ADMAIF1,
	TEGRA186_DAI_LINK_ADSP_ADMAIF2,
	TEGRA186_DAI_LINK_ADSP_ADMAIF3,
	TEGRA186_DAI_LINK_ADSP_ADMAIF4,
	TEGRA186_DAI_LINK_ADSP_ADMAIF5,
	TEGRA186_DAI_LINK_ADSP_ADMAIF6,
	TEGRA186_DAI_LINK_ADSP_ADMAIF7,
	TEGRA186_DAI_LINK_ADSP_ADMAIF8,
	TEGRA186_DAI_LINK_ADSP_ADMAIF9,
	TEGRA186_DAI_LINK_ADSP_ADMAIF10,
	TEGRA186_DAI_LINK_ADSP_ADMAIF11,
	TEGRA186_DAI_LINK_ADSP_ADMAIF12,
	TEGRA186_DAI_LINK_ADSP_ADMAIF13,
	TEGRA186_DAI_LINK_ADSP_ADMAIF14,
	TEGRA186_DAI_LINK_ADSP_ADMAIF15,
	TEGRA186_DAI_LINK_ADSP_ADMAIF16,
	TEGRA186_DAI_LINK_ADSP_ADMAIF17,
	TEGRA186_DAI_LINK_ADSP_ADMAIF18,
	TEGRA186_DAI_LINK_ADSP_ADMAIF19,
	TEGRA186_DAI_LINK_ADSP_ADMAIF20,
	TEGRA186_DAI_LINK_ADSP_PCM1,
	TEGRA186_DAI_LINK_ADSP_PCM2,
	TEGRA186_DAI_LINK_ADSP_PCM3,
	TEGRA186_DAI_LINK_ADSP_PCM4,
	TEGRA186_DAI_LINK_ADSP_PCM5,
	TEGRA186_DAI_LINK_ADSP_PCM6,
	TEGRA186_DAI_LINK_ADSP_PCM7,
	TEGRA186_DAI_LINK_ADSP_PCM8,
	TEGRA186_DAI_LINK_ADSP_PCM9,
	TEGRA186_DAI_LINK_ADSP_PCM10,
	TEGRA186_DAI_LINK_ADSP_PCM11,
	TEGRA186_DAI_LINK_ADSP_PCM12,
	TEGRA186_DAI_LINK_ADSP_PCM13,
	TEGRA186_DAI_LINK_ADSP_PCM14,
	TEGRA186_DAI_LINK_ADSP_PCM15,
	TEGRA186_XBAR_DAI_LINKS, /* Total number of xbar dai links */
};

struct snd_soc_dai_link *tegra_virt_machine_get_dai_link(void);
unsigned int tegra_virt_machine_get_num_dai_links(void);
void tegra_virt_machine_set_num_dai_links(unsigned int val);
void tegra_virt_machine_set_adsp_admaif_dai_params(
		uint32_t id, struct snd_soc_pcm_stream *params);
#endif
